<?php
/// Clase para Generacion automatica de html
class HTML
{
  /// Funciones basicas para el uso de la libreria
  function tag($tipo,$opciones=array())
  {
    echo "<$tipo ".$this->array2html($opciones).">";
  }
  
  function end($tipo)
  {
    echo "</$tipo>";
  }

  function array2str($htmlarray, $forma)
  {
    $str_html = '';
    if(is_array($htmlarray))
      foreach($htmlarray as $k => $v)
	if(is_null($v))
	  continue;
	else
	  $str_html .= ($forma == 'html') ? ($k.'="'.$v.'" ') : (($forma == 'css') ? ($k.': '.$v.'; ') : '');
    return $str_html;
  }

  function array2html($htmlarray)
  {
    return $this->array2str($htmlarray, 'html');
  }

  function array2css($htmlarray)
  {
    return $this->array2str($htmlarray, 'css');
  }

  function htmlA($opciones = array())
  {
    $html = '<!DOCTYPE html><html><head><meta http-equiv="Content-type" content="text/html;charset=UTF-8" /><title>'.$opciones['title'].'</title>';
        $html .= $this->cargaArchivosJavascript($opciones['javascript']);
        $html .= $this->cargaArchivosCss($opciones['css']);
    $html .= '</head><body>';
    echo $html;return $html;
  }
  
  function cargaArchivosJavascript($archivos = array())
  {
    $html = '';
    if(is_array($archivos))
    foreach($archivos as $k => $v)
    {
      $html.= '<script type="text/javascript" src="'.$v.'"></script>';
    }
    return $html;
  }

  function cargaArchivosCss($archivos = array())
  {
    $html = '';
    if(is_array($archivos))
    foreach($archivos as $k => $v)
    {
      $html.= '<link rel="stylesheet" type="text/css" media="screen" href="'.$v.'"/>';
    }
    return $html;
  }

  function htmlC()
  {
     echo '</body></html>';
  }

  function input($columna,$html = array())
  {
    global $DB;
    if(is_array($DB))
      $value = isset($DB[$columna]) ?  $DB[$columna] : "";
    else
      $value = '';
    
    $atributosDefault = array(
    'id' => $columna,
    'type' => 'text',
    'value' => $value,
    );

    if(is_array($html))
      $html = $html + $atributosDefault;
    else
      $html = $atributosDefault;

    echo '<input '.$this->array2html($html).'/>';
  }

  function label($columna, $html = array())
  {
    $atributosDefault = array(
    'id' => 'lb_'.$columna,
    'for' => $columna
    );

    if(is_array($html))
      $html = $html + $atributosDefault;
    else
      $html = $atributosDefault;

    echo '<label '.$this->array2html($html).'>'.$columna.'</label>';
  }

  function span($texto,$opciones=array())
  {
    echo '<span '.$this->array2html($opciones).'>'.$texto.'</span>';
  }

  function a($texto,$opciones=array())
  {
    echo '<a '.$this->array2html($opciones).'>'.$texto.'</a>';
  }
  
  function img($opciones=array())
  {
    echo '<img '.$this->array2html($opciones).'/>';
  }
  
  function tablaFormulario($texto,$opciones=array())
  {    
    $this->tag('table');
      $this->tag('tr');
        $this->tag('td');
        $this->tag('h2');
          $this->span(tr($texto),array('tr'=>$texto));
        $this->end('h2');
        $this->end('td');
      $this->end('tr');
  }

  function tr_input($texto,$columna,$opciones=array())
  {
	 $input = $label = array();
	 if(isset($opciones['input']))
		$input = $opciones['input'];
	 if(isset($opciones['label']))
		$label = $opciones['label'];

	 $this->tag('tr');
		$this->td_label($texto,$label);
		$this->td_input($columna,$input);
	 $this->end('tr');
  }

  function tr_boton($texto,$columna,$opciones=array())
  {
	 $this->tag('tr');
		$this->td_boton($texto,$columna,$opciones);
	 $this->end('tr');
  }

  function tr_span($texto,$opciones=array())
  {
   $this->tag('tr');
    $this->td_span($texto,$opciones);
   $this->end('tr');
  }

  function td_boton($texto,$columna,$opciones=array())
  {
	 global $DB;
	 $DB[$columna]=tr($texto);debug($DB,'161');
	 $this->tag('td');
		$this->input($columna,array('type'=>'submit','tr'=>$texto,'onclick'=>$columna.'()'));
	 $this->end('td');
  }

  function td_input($columna,$opciones=array())
  {
		$this->tag('td');
		  $this->input($columna,$opciones);
		$this->end('td');
  }

  function td_label($texto,$opciones=array())
  {
	 $this->tag('td');
		$this->label(tr($texto),array('tr'=>$texto));
	 $this->end('td');
  }

  function td_span($texto,$opciones=array())
  {	 
   $this->tag('td');
		$this->span(tr($texto),array('tr'=>$texto));
	 $this->end('td');
  }
}